A virtual machine provides an environment in which an operating system may execute with apparent control of a dedicated physical machine. Multiple virtual machines may execute on a common hardware machine, and each virtual machine may operate with protection and isolation from other virtual machines executing on the same common hardware machine. Each virtual machine typically encapsulates a complete executing state for a corresponding operating system, including both user-level applications and kernel-mode operating system services.
In many computing environments, each hardware machine is typically underutilized on average when executing a corresponding server application. As a result of average hardware underutilization over many hardware machines, computing environments configured to dedicate a hardware machine to each server application are typically characterized as being very inefficient with respect to cost, power consumption, management, and potentially reliability.
Virtual machines are advantageously deployed to consolidate multiple software servers in a computing environment onto one or more shared hardware machines for execution. A hypervisor is a software layer that virtualizes hardware resources, and presents a virtual hardware interface to one or more virtual machine instances that may reflect an underlying hardware machine architecture or an abstraction of an arbitrary machine architecture. A guest operating system executing within a virtual machine interacts with an image of guest physical memory, which is organized into storage units referred to as guest physical pages. Each guest physical page is referenced via a guest physical page number (GPPN). Each GPPN is typically mapped to a machine page number (MPN) that is stored in host machine memory.
Without limitation, a guest physical page may be allocated and initialized. After a guest physical page is allocated, the guest operating system commonly initializes the guest physical page with a known pattern, such as a sequence of zeros. Although the guest operating system conventionally initializes each allocated guest physical page with the known pattern, only a subset of the initialized guest physical pages is typically accessed subsequent to initialization. Such an initialization process requires computational effort and memory bandwidth to write the pattern, and each initialized page that is not subsequently accessed represents superfluous computation and memory bandwidth. Computational effort and memory bandwidth associated with guest physical page initialization corresponds to system overhead that generally degrades system performance.